Gene expression programming

Gene Expression Programming (GEP) is an evolutionary algorithm that evolves populations of computer programs in order to solve a user-defined problem. GEP has similarities, but is distinct from, the evolutionary computational method of genetic programming. In genetic programming the individuals comprising a population are typically symbolic expression trees; however, the individuals comprising a population of GEP are encoded as linear chromosomes, which are then translated into expression trees. The important difference is that the recombination operators of genetic programming operate directly on the tree structure (e.g. swapping sub-trees), whereas the recombination operators of gene expression programming operate directly on the linear encoding (i.e. before it is translated into a tree). As such, after recombination, the modified portions of the resulting expression trees often bear little semblance to their direct ancestors.

The expression trees are themselves computer programs evolved to solve a particular problem and are selected according to their performance/fitness in solving the problem at hand. After repeated iteration, populations of such computer programs will ideally discover new traits and become better adapted to a particular selection environment. The desired endpoint of the algorithm is that a good solution has been evolved by the evolutionary process.

Cândida Ferreira, the inventor of the technique, claims that GEP significantly surpasses the traditional genetic programming approach for a number of benchmark problems. She attributes the alleged speed increase to the separate genotype/phenotype representation and the inherently multigenic organization of GEP chromosomes.

For further details of GEP see the GEP paper published in Complex Systems, where the algorithm is described and applied to a set of problems including symbolic regression, Boolean concept learning, and cellular automata.

Further reading

References